函数重载(Function Overload)
函数重载允许同一个函数根据不同的参数类型,提供不同的类型签名和返回值。
基本用法
// 重载签名
function process(input: string): string
function process(input: number): number
function process(input: string | number): string | number {
if (typeof input === 'string') {
return input.toUpperCase()
}
return input * 2
}
const r1 = process('hello') // TypeScript推断返回string
const r2 = process(42) // TypeScript推断返回number
typescript
实际应用场景
// 根据参数类型返回不同格式
function query(id: number): User
function query(name: string): User[]
function query(param: number | string): User | User[] {
if (typeof param === 'number') {
return db.findById(param) // 返回单个用户
}
return db.findByName(param) // 返回用户数组
}
typescript
注意事项
- 重载签名必须在实现签名之前
- 实现签名必须兼容所有重载签名
- TypeScript只使用重载签名进行类型检查,实现签名对外不可见
↑